﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using Utilities;

namespace MaHoaUngDung
{
    public partial class DangKiFrm : DevComponents.DotNetBar.Office2007Form
    {
        private int RSAKeySize = 0;

        public DangKiFrm()
        {
            InitializeComponent();
        }

        private bool ValidateData()
        {
            // validate key size value            
            if (tbRSAKeySize.Text.Equals(string.Empty))
            {
                errorProvider.SetError(tbRSAKeySize, "kích thước khóa không được trống!.");
                return false;
            }

            if (!int.TryParse(tbRSAKeySize.Text.Trim(), out RSAKeySize))
            {
                errorProvider.SetError(tbRSAKeySize, "giá trị kích thước khóa không hợp lệ!.");
                return false;
            }

            if (RSAKeySize % 64 != 0)
            {
                errorProvider.SetError(tbRSAKeySize, "kích thước khóa phải chia hết cho 64!.");
                return false;
            }

            if (RSAKeySize < 512 || RSAKeySize > 1024)
            {
                errorProvider.SetError(tbRSAKeySize, "giá trị kích thước khóa phải nằm giữa 512 và 1024.");
                return false;
            }

            if (!tbConfirm.Text.Trim().Equals(tbPass.Text.Trim()))
            {
                errorProvider.SetError(tbConfirm, "passphrase nhập lại chưa đúng!");
                return false;
            }

            return true;
        }

        private void btnOK_Click(object sender, EventArgs e)
        {
            errorProvider.Clear();
            if (ValidateData())
            {
                try
                {
                    string name = tbName.Text.Trim();
                    string email = tbEmail.Text.Trim();
                    string pass = tbPass.Text.Trim();
                    string address = tbAddress.Text.Trim();
                    string phone = tbPhone.Text.Trim();
                    DateTime birth = dtpBirthday.Value;

                    if (Program.ListUser.GetUserByEmail(email) != null)
                    {
                        MessageBox.Show("địa chỉ Email này đã được đăng kí rồi.", Utility.InformTitle);
                        return;
                    }
                    User newUser = new User(name, email, address, phone, birth, pass, RSAKeySize);

                    Program.ListUser.AddUser(newUser);

                    MessageBox.Show("Thêm người dùng thành công.", "Thông báo",MessageBoxButtons.OK,MessageBoxIcon.Information);
                    this.Close();
                }
                catch (Exception ex)
                {
                    MessageBox.Show(ex.Message);
                }
            }
        }

        private void btnCancel_Click(object sender, EventArgs e)
        {
            this.Close();
        }
    }
}
